﻿using UnityEngine;
using System.Collections;

/* Das Kameramovement Skript muss auf die Main-Camera gelegt werden *
 * Bitte beachten: Das GameObject des Spielers muss in die Skript   *
 * Komponente gelegt werden. Sonst verfolgt die Kamera den Spieler  *
 * nicht.															*/

public class CameraMovementScript : MonoBehaviour {

	public Transform player;		/* Variable die den Spieler enthält */
	private Vector3 normCamPos = new Vector3( 0, 10, -15 ); /* Kameraposition relativ zum Spieler */
	private Vector3 relCamPos;		/* Vektor zwischen Kamera und Spieler */
	private Vector3 lastPos;		/* Position des Spielers im letzten Frame */
	private float camPosMag;		/* Laenge des Vektors zwischen Kamera und Spieler */
	private float zoomSpeed;		/* Geschwindigkeit des Zoom der die Kamera */

	// Use this for initialization
	void Start () {
		relCamPos = normCamPos + player.position; 
		transform.Rotate (new Vector3 (40.0f, 0, 0)); /* Rotation der Kamera um die Top-Down Ansicht zu erzeugen */
		lastPos = player.position;
	}
	
	// Update is called once per frame
	void Update () {

		camPosMag = relCamPos.magnitude; 

		/* Hat sich der Spieler seit dem letzten Frame bewegt? */
		if (lastPos == player.position) 
		{
			if (camPosMag < 15) 
			{
				zoomSpeed = 0;
			} 
			/* Hereinzoomen der Kamera */
			else 
			{
				zoomSpeed = 0.002f;
				relCamPos.z += zoomSpeed;
				relCamPos.y -= zoomSpeed * 2;
			}
		} 
		else 
		{
			if( camPosMag > 19 )
			{
				zoomSpeed = 0;
			}
			/* Herauszoomen der Kamera */
			else
			{
				zoomSpeed = 0.02f;
				relCamPos.z -= zoomSpeed;
				relCamPos.y += zoomSpeed*2;
			}
		}
		/* Verfolgung des Spielers */
		transform.position = new Vector3 (player.position.x, player.position.y + relCamPos.y, player.position.z + relCamPos.z);
		/* Ermitteln der letzten Spielerposition */
		lastPos = player.position;
	}
}
